﻿<%@ Page Culture="auto" UICulture="auto" Title="MForm webcontrols" Language="C#"
    MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs"
    Inherits="BM.Tools.WebControls.MForm.Example.Main" %>

<%@ Register TagPrefix="mftitle" Namespace="BM.Tools.WebControls.MForm.Controls.Titles"
    Assembly="BM.Tools.WebControls.MForm" %>
<asp:Content ID="Content1" ContentPlaceHolderID="Description" runat="server">
    <div class="Section">
        <mftitle:TitleControl runat="server" Text="What is MForm?" />
        <p>
            MForm is a set of webcontrols that can be used to create, modify and view typed
            XML data. Typed XML is such an XML document, whose structure is well-known and defined.
            The special thing about MForm is that it provides a way to easily generate a fully
            functional form from the given data definition. This data definition must represent
            the aforementioned typed XML, this can be either XML Schema, WSDL or XML-serializable
            type. After the generation process, the form can be freely modified either in .aspx
            or in code.
        </p>
    </div>
    <div class="Section">
        <mftitle:TitleControl runat="server" Text="What was MForm designed for?" />
        <p>
            MForm was created to provide a fast, consistent and elegant way for collecting large
            data inputs.
        </p>
        <p>
            Creating web forms is usually a mundane and repetitive task. There needs to be a
            label, a text box and a validator for each of the fields. Controls such as a Repeater
            and a GridView may limit work expense if the collected data is tabular but data
            structures tend to be more complicated. MForm aims at resolving these problems.
        </p>
    </div>
    <div class="Section">
        <mftitle:TitleControl runat="server" Text="How is MForm written?" />
        <p>
            MForm is built on top of the ASP.NET 3.5 framework. MForm is created from a tree
            of custom web controls, of which each represents a part of XML data definition.
            From the technical point of view, MForm uses some concepts from the Ajax control
            toolkit library and uses jquery library on the client side.
        </p>
    </div>
    <div class="Section">
        <mftitle:TitleControl ID="TitleControl1" runat="server" Text="How does it look like?" />
        <p>
            You can watch the video in order to see how web forms can be created using MForm.
        </p>
        <p>
            <object width="640" height="385">
                <param name="movie" value="http://www.youtube.com/v/GfrvCApc02Y&hl=pl&fs=1&rel=0&hd=1">
                </param>
                <param name="allowFullScreen" value="true"></param>
                <param name="allowscriptaccess" value="always"></param>
                <embed src="http://www.youtube.com/v/GfrvCApc02Y&hl=pl&fs=1&rel=0&hd=1" type="application/x-shockwave-flash"
                    allowscriptaccess="always" allowfullscreen="true" width="640" height="385">
	            </embed>
            </object>
        </p>
    </div>
    <div class="Section">
        <mftitle:TitleControl runat="server" Text="OK, it looks promising. How can I start?" />
        <p>
            The easiest way to create MForm control is to generate one with the use of Visual
            Studio designer. In order to do it, you need to have some representation of the
            XML structure, which the MForm control will reflect. As already mentioned, this
            data representation can be a XML schema file, a WSDL file/url or a managed library
            with XML-serializable types. If you have not heard of XML Schema before, you might
            want to read this <a href="http://www.xml.com/pub/a/2000/11/29/schemas/part1.html">introduction</a>.
            A WSDL on the other hand is a web service definition language.
        </p>
        <p>
            You will find the tutorial on how to generate your first MForm webcontrol in
            <asp:HyperLink runat="server" NavigateUrl="~/Start/MyFirstMFormPage.aspx" Text="here" />.
        </p>
        <p>
            The <span class="Important">latest MForm sources</span> can be found at <a href="http://mform.codeplex.com/Release/ProjectReleases.aspx">
                <span class="Important">CodePlex</span></a>.
        </p>
        <p>
            A <span class="Important">detailed introductory article</span> can also be found
            at <a href="http://www.codeproject.com/KB/custom-controls/MFormIntroduction.aspx"><span
                class="Important">CodeProject</span></a>.
        </p>
    </div>
    <div class="Section">
        <mftitle:TitleControl runat="server" Text="Can any XML schema / WSDL be used with the generator?" />
        <p>
            The generator is capable of converting XML schema or WSDL definitions into a corresponding
            MForm controls structure. However, there are some limitations, either because the
            MForm controls cannot operate on some typed XML features, or because the generator
            cannot convert some schema definitions. These limitations will be investigated when
            MForm reaches a stable release.
        </p>
        <p>
            List of known limitations:
        </p>
        <ul>
            <li><span class="Important">xsd:any</span> element from XML Schema definition is ignored,</li>
            <li>recursively used element definitions (i.e. element definition which as one of its
                descendants has itself) are ignored,</li>
            <li>Two or more elements with the same qualified name but different definition under
                one schema particle (<span class="Important">xsd:sequence</span> or <span class="Important">
                    xsd:choice</span> or <span class="Important">xsd:all</span>) may result in an
                unexpected data input.</li>
            <li><span class="Important">xsd:group</span> with <span class="Important">maxoccurs</span>
                higher than 1 is treated as with <span class="Important">maxoccurs</span> equal
                1,</li>
        </ul>
    </div>
</asp:Content>
